<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script type="text/javascript">
      /* 
			不使用框架进行编码时，什么时候用defineProperty？
					要追加的属性，来自于其他值的加工		
		*/
      let p = {
        firstName: '张',
        lastName: '三',
      }

      Object.defineProperty(p, 'sex', {
        set(value) {
          this.sex = value //不能这样写，会陷入死循环
        },
        get() {
          return '女'
        },
      })

      /* Object.defineProperty(p,'fullName',{
			set(value){//fullName被修改时，set被调用，且set方法中的this是p,且set会收到修改的值
				const arr = value.split('-')
				this.firstName = arr[0]
				this.lastName = arr[1]
			},
			get(){ //fullName被读取时，get被调用，且get方法中的this是p
				return this.firstName + '-' + this.lastName 
			}
		}) */
    </script>
  </body>
</html>
